Aquadopp#434
Conversation
|
I have not figured out how to properly set the cell size and blanking distance for high resolution (HR) profiles, so tbd on that. |
|
Hi @jmcvey3 , thanks a lot for the great work. You are a legend! I will pull and test it hopefully next week. |
akeeste
left a comment
There was a problem hiding this comment.
Thanks @jmcvey3. This generally looks good to me. Do we need a new test to cover Aquadopp data?
@MRCGit-collab @MogoBRE if you can test this PR with your datasets that would be very helpful!
There was a problem hiding this comment.
These files are now ignored by .gitignore. I suggest we remove this file entirely
There was a problem hiding this comment.
Hold that thought - they're needed in test_data, but not the next directory up, where they're generated and not deleted if that test fails.
|
Tagging #356 for some of the original discussion |
Yes I need to write tests |
| units="1", | ||
| ), | ||
| "PressureMSB": _VarAtts( | ||
| "pressure": _VarAtts( |
There was a problem hiding this comment.
@jmcvey3, is it possible that changing these variable names would break any analysis code downstream for MHKiT users? IDK if it is worth having some deprecation strategy here or what makes sense. This could quickly get complex and difficult, but curious how you handle changes here more than anything.
There was a problem hiding this comment.
For the ones I changed here, no, since they don't actually show up on the user side. I did a lot of "standardizing" of this nortek code to make it consistent with the rest of dolfyn; the line you highlighted here set up the pressure variable differently than everywhere else in dolfyn.
There was a problem hiding this comment.
Sounds good, thanks for the clarification.
| default_val=nan, | ||
| units="1", | ||
| long_name="Acoustic Signal Amplitude", | ||
| standard_name="signal_intensity_from_multibeam_acoustic_doppler_velocity_sensor_in_sea_water", |
There was a problem hiding this comment.
@jmcvey3 I think that adding standard names from the CF standard names table is a nice addition here. Do you think including the description would also be valuable?
Also, one nit here that I don't know how to solve is the sea_water part of the cf convention names. I think there are likely situations where the instrument is deployed in NOT sea water and that standard name may be incorrect and misleading. I don't have an obvious solution, just more of an observation here. I don't other non sea water variants signal_intensity_* in the cf standard name table.
There was a problem hiding this comment.
Yeah I don't have a good answer for you here since CF standard names doesn't do ADCP variables well. I've been tempted to leave these standard names off completely.
Adding a description makes it even more dependent on context - this is what Tsdat is useful for.
There was a problem hiding this comment.
IMO, the CF standard names are a step in the right direction vs not specifying a "name". standard_name works well in xarray and other netcdf tooling, but here specifically it is not "flexible" enough and may lead to confusion by the end user.
Does it "break" the cf standard or nc files in general if MHKiT uses standard_names that are not in the table?
If the standard_name does not need to perfectly match could we just remove sea_ here, so it becomes: signal_intensity_from_multibeam_acoustic_doppler_velocity_sensor_in_water.
Or alternatively have the user input fresh or sea water or something (also we would have to make the user choose or figure out this setting from data, which seems doable, but likely not necessary)? That could get messy with areas with both/mixing so maybe just water is fine?
Also if the simple solution is removal of standard_name for this situation, that seems reasonable here also.
There was a problem hiding this comment.
No, creating your own standard name defeats the purpose of standard names. If anything, the user is ultimately responsible to add enough metadata to their data so that others can understand it properly. We can't cover every edge case.
There was a problem hiding this comment.
@jmcvey3 Understood. I can appreciate the rigidity of the CF conventions, and appreciate the guidance here. CF Standards are something that I'm still working to understand fully.
Because we can't guarantee that an acoustic instrument is deployed in sea_water it seems like we should remove the standard_name here, or make including the standard_name an option somehow?
ME Data Pipeline Standards Version 1.0 has some guidance also:
Based the above description, the standard_name is "not required" because a suitable standard name for this variable does not exist? Do you agree with that?
There was a problem hiding this comment.
I don't have a hard opinion on this. We can remove it if you'd like
There was a problem hiding this comment.
It seems wise to remove just in case a deployment is in fresh water.
So I am in favor of removing.
There was a problem hiding this comment.
Well, I take it back, I've developed an opinion - every single standard_name includes "sea_water". I think this goes beyond the scope of this PR
There was a problem hiding this comment.
If there are other sea_water related changes that you would want to make, then yes that is outside of the scope of this PR.
What do you want to do for this instance?
I realize that this is a bit "in the weeds" also. I'm in favor of getting the functionality of this merged and focusing on metadata at some later time.
|
Hi all,
Apologies for not replying earlier. I have been inundated with other work and lost track of this.
I pulled the PR and tried running it on my data set. I get a consistent error message:
self._inst = self.config.pop("config_type")
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
KeyError: 'config_type'
I'm no advanced user (and more of a field tech) and I checked with a few people but we couldn't figure out the issue.
So please excuse if this is a simple fix and a fault on my side.
I will continue to work on it, if I have time (it's still part of an ongoing project).
THanks in advance for all the effort!
Cheers,
Jürgen Zier
Marine Robotics Centre - MRC
T +32 (0)59-336229 / M +32 (0)468-293395
…________________________________
From: Adam Keester ***@***.***>
Sent: Tuesday, 24 February 2026 21:35
To: MHKiT-Software/MHKiT-Python ***@***.***>
Cc: Juergen Zier ***@***.***>; Mention ***@***.***>
Subject: Re: [MHKiT-Software/MHKiT-Python] Aquadopp (PR #434)
@akeeste approved this pull request.
Thanks @jmcvey3<https://github.com/jmcvey3>. This generally looks good to me. Do we need a new test to cover Aquadopp data?
@MRCGit-collab<https://github.com/MRCGit-collab> @MogoBRE<https://github.com/MogoBRE> if you can test this PR with your datasets that would be very helpful!
________________________________
On examples/data/dolfyn/test_data/AWAC_test01.dolfyn.log<#434 (comment)>:
These files are now ignored by .gitignore. I suggest we remove this file entirely
—
Reply to this email directly, view it on GitHub<#434 (review)>, or unsubscribe<https://github.com/notifications/unsubscribe-auth/B5PB4DDWH63A2CODCNCDYA34NSYXPAVCNFSM6AAAAACUFILMHGVHI2DSMVQWIX3LMV43YUDVNRWFEZLROVSXG5CSMV3GSZLXHMZTQNJQGMYTMNJSG4>.
You are receiving this because you were mentioned.Message ID: ***@***.***>
|
|
Hi James,
Just a quick update, issue was on my side, I managed to run it and looks ok at first sight. Will do some further testing and give you an update.
Thanks a lot.
Juergen
Jürgen Zier
Marine Robotics Centre - MRC
T +32 (0)59-336229 / M +32 (0)468-293395
…________________________________
From: Juergen Zier ***@***.***>
Sent: Wednesday, 4 March 2026 14:13
To: MHKiT-Software/MHKiT-Python ***@***.***>; MHKiT-Software/MHKiT-Python ***@***.***>
Cc: Mention ***@***.***>
Subject: Re: [MHKiT-Software/MHKiT-Python] Aquadopp (PR #434)
Hi all,
Apologies for not replying earlier. I have been inundated with other work and lost track of this.
I pulled the PR and tried running it on my data set. I get a consistent error message:
self._inst = self.config.pop("config_type")
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
KeyError: 'config_type'
I'm no advanced user (and more of a field tech) and I checked with a few people but we couldn't figure out the issue.
So please excuse if this is a simple fix and a fault on my side.
I will continue to work on it, if I have time (it's still part of an ongoing project).
THanks in advance for all the effort!
Cheers,
Jürgen Zier
Marine Robotics Centre - MRC
T +32 (0)59-336229 / M +32 (0)468-293395
________________________________
From: Adam Keester ***@***.***>
Sent: Tuesday, 24 February 2026 21:35
To: MHKiT-Software/MHKiT-Python ***@***.***>
Cc: Juergen Zier ***@***.***>; Mention ***@***.***>
Subject: Re: [MHKiT-Software/MHKiT-Python] Aquadopp (PR #434)
@akeeste approved this pull request.
Thanks @jmcvey3<https://github.com/jmcvey3>. This generally looks good to me. Do we need a new test to cover Aquadopp data?
@MRCGit-collab<https://github.com/MRCGit-collab> @MogoBRE<https://github.com/MogoBRE> if you can test this PR with your datasets that would be very helpful!
________________________________
On examples/data/dolfyn/test_data/AWAC_test01.dolfyn.log<#434 (comment)>:
These files are now ignored by .gitignore. I suggest we remove this file entirely
—
Reply to this email directly, view it on GitHub<#434 (review)>, or unsubscribe<https://github.com/notifications/unsubscribe-auth/B5PB4DDWH63A2CODCNCDYA34NSYXPAVCNFSM6AAAAACUFILMHGVHI2DSMVQWIX3LMV43YUDVNRWFEZLROVSXG5CSMV3GSZLXHMZTQNJQGMYTMNJSG4>.
You are receiving this because you were mentioned.Message ID: ***@***.***>
|
# MHKiT-Python v1.1.0 ## Additions * Acoustics: Add millicdecade and WISPR instrument support * Added millidecade spectral conversion * Added a WISPR hydrophone reader * Added a voltage-based `export_audio` resampling option * Refactored band-averaging to avoid losing information at frequency-band boundaries * #447 * Author: @jmcvey3 * Reviewer: @simmsa * DOLfYN: Add [Nortek Aquadopp](https://www.nortekgroup.com/oceanography/aquadopp-series) ADCP support * Added DOLfYN support for reading Aquadopp instruments * Cleaned Nortek parsing code * Simplified handling of the non-cabled ADV orientation flag * #434 * Author: @jmcvey3 * Reviewer: @akeeste * Examples: Add ADCP waves example: `example/adcp_waves_example.ipynb` * Added an example notebook showing how to ingest and analyze wave measurements from a dual-profile Nortek Signature 250 deployment at PacWave. * #430 * Author: @jmcvey3 * Reviewer: @akeeste ## Improvements ### Acoustics - Improved flexibility and robustness of the Acoustics module - Added a configurable FFT length for sound pressure PSDs - Renamed bin/windowing attributes for clarity - Fixed an incorrectly signed gain correction - #433 - Author: @jmcvey3 - Reviewer: @akeeste ### DOLfYN - Refactored PSD calculations to use `scipy.signal.welch` - Replaced DOLfYN's custom Welch-like PSD implementation (built each segment from bin slices, could not overlap FFT segments) with `scipy.signal.welch` - Removed the bin-based segment structure and added a `step` argument to control overlap - Dropped float32 casts in some functions in favor of float64 - Removed `fft.py` and renamed `tools/misc.py` to `tools.py` - Breaking Changes: - NaNs are no longer tolerated in PSD calculations - DOLfYN defaults to 0% overlap to preserve existing array shapes - Acoustics defaults to 50% overlap - PSD output time dimension renamed to `time_psd` - #452 - Author: @jmcvey3 - Reviewer: @akeeste, @simmsa - Improved handling of "averaged" profiles - Fixed handling of Nortek Signature dual-profile ADCP data by defaulting to "_avg" velocity variables when untagged ones are absent. - #430 - Author: @jmcvey3 - Reviewer: @akeeste - Critical PSD bugfix - Fixed a bug where individual FFTs received a 50% overlap twice, which corrupted the first and last spectrum of a timeseries. - #430 - Author: @jmcvey3 - Reviewer: @akeeste ### Examples - Added histograms to ADCP example - #448 - Author: @browniea - Reviewer: @akeeste ### River/IO - Fixed Qhull interpolation and D3D coordinate-system errors - #448 - Author: @browniea - Reviewer: @akeeste - Fixes: #442, #444 - Delft3D module updates - Added new Delft3D coordinate names - Added a new grid-convergence-index calculation function - Added support for xarray/netCDF4 input in the D3D module - #428 - Author: @browniea - Reviewer: @akeeste ### Wave - NDBC Directional Wave Units - Fixed NDBC directional wave spectrum output to return degrees instead of radians - Updated polar plots so 0 deg is at the top and increases clockwise - #437 - Author: @jmcvey3 - Reviewer: @akeeste - Fixes: #427 ### Wave/Hindcast - Added a `hindcast_guard` exception-handling decorator (`hindcast_exceptions.py`) that surfaces a clear error on HSDS request failures, distinguishing the known NLR HSDS outage (#450) from other failures - #449 - Author: @simmsa - Reviewer: @akeeste ## Maintenance - Added Python 3.13 support - #445 - Author: @simmsa - Reviewer: @akeeste - Fixes: #441 - Added [pandas 3](https://pandas.pydata.org/community/blog/pandas-3.0.html) Support - Updated the pandas dependency to allow pandas 3.x - Added a compatibility shim for NDBC missing-value handling related to pandas 3 object to String dtype api changes - Fixed a deprecated period alias in tests - #443 - Author: @simmsa - Reviewer: @akeeste - Fixes: #440 - Updated GitHub Actions CI, expanded installation/developer documentation, refreshed dev environment, and trimmed dependencies - Refactored optional dependencies - Standardized conda/conda-forge environment builds - Scoped black linting to changed files - #436 - Author: @simmsa - Reviewer: @akeeste - Update `rex` dependency to target pypi package to [`NLR-rex[hsds]>=0.5.0`](https://pypi.org/project/NLR-rex/) - #449 - Author: @simmsa - Reviewer: @akeeste
# MHKiT-Python v1.1.0 ## Additions * Acoustics: Add millicdecade and WISPR instrument support * Added millidecade spectral conversion * Added a WISPR hydrophone reader * Added a voltage-based `export_audio` resampling option * Refactored band-averaging to avoid losing information at frequency-band boundaries * MHKiT-Software#447 * Author: @jmcvey3 * Reviewer: @simmsa * DOLfYN: Add [Nortek Aquadopp](https://www.nortekgroup.com/oceanography/aquadopp-series) ADCP support * Added DOLfYN support for reading Aquadopp instruments * Cleaned Nortek parsing code * Simplified handling of the non-cabled ADV orientation flag * MHKiT-Software#434 * Author: @jmcvey3 * Reviewer: @akeeste * Examples: Add ADCP waves example: `example/adcp_waves_example.ipynb` * Added an example notebook showing how to ingest and analyze wave measurements from a dual-profile Nortek Signature 250 deployment at PacWave. * MHKiT-Software#430 * Author: @jmcvey3 * Reviewer: @akeeste ## Improvements ### Acoustics - Improved flexibility and robustness of the Acoustics module - Added a configurable FFT length for sound pressure PSDs - Renamed bin/windowing attributes for clarity - Fixed an incorrectly signed gain correction - MHKiT-Software#433 - Author: @jmcvey3 - Reviewer: @akeeste ### DOLfYN - Refactored PSD calculations to use `scipy.signal.welch` - Replaced DOLfYN's custom Welch-like PSD implementation (built each segment from bin slices, could not overlap FFT segments) with `scipy.signal.welch` - Removed the bin-based segment structure and added a `step` argument to control overlap - Dropped float32 casts in some functions in favor of float64 - Removed `fft.py` and renamed `tools/misc.py` to `tools.py` - Breaking Changes: - NaNs are no longer tolerated in PSD calculations - DOLfYN defaults to 0% overlap to preserve existing array shapes - Acoustics defaults to 50% overlap - PSD output time dimension renamed to `time_psd` - MHKiT-Software#452 - Author: @jmcvey3 - Reviewer: @akeeste, @simmsa - Improved handling of "averaged" profiles - Fixed handling of Nortek Signature dual-profile ADCP data by defaulting to "_avg" velocity variables when untagged ones are absent. - MHKiT-Software#430 - Author: @jmcvey3 - Reviewer: @akeeste - Critical PSD bugfix - Fixed a bug where individual FFTs received a 50% overlap twice, which corrupted the first and last spectrum of a timeseries. - MHKiT-Software#430 - Author: @jmcvey3 - Reviewer: @akeeste ### Examples - Added histograms to ADCP example - MHKiT-Software#448 - Author: @browniea - Reviewer: @akeeste ### River/IO - Fixed Qhull interpolation and D3D coordinate-system errors - MHKiT-Software#448 - Author: @browniea - Reviewer: @akeeste - Fixes: MHKiT-Software#442, MHKiT-Software#444 - Delft3D module updates - Added new Delft3D coordinate names - Added a new grid-convergence-index calculation function - Added support for xarray/netCDF4 input in the D3D module - MHKiT-Software#428 - Author: @browniea - Reviewer: @akeeste ### Wave - NDBC Directional Wave Units - Fixed NDBC directional wave spectrum output to return degrees instead of radians - Updated polar plots so 0 deg is at the top and increases clockwise - MHKiT-Software#437 - Author: @jmcvey3 - Reviewer: @akeeste - Fixes: MHKiT-Software#427 ### Wave/Hindcast - Added a `hindcast_guard` exception-handling decorator (`hindcast_exceptions.py`) that surfaces a clear error on HSDS request failures, distinguishing the known NLR HSDS outage (MHKiT-Software#450) from other failures - MHKiT-Software#449 - Author: @simmsa - Reviewer: @akeeste ## Maintenance - Added Python 3.13 support - MHKiT-Software#445 - Author: @simmsa - Reviewer: @akeeste - Fixes: MHKiT-Software#441 - Added [pandas 3](https://pandas.pydata.org/community/blog/pandas-3.0.html) Support - Updated the pandas dependency to allow pandas 3.x - Added a compatibility shim for NDBC missing-value handling related to pandas 3 object to String dtype api changes - Fixed a deprecated period alias in tests - MHKiT-Software#443 - Author: @simmsa - Reviewer: @akeeste - Fixes: MHKiT-Software#440 - Updated GitHub Actions CI, expanded installation/developer documentation, refreshed dev environment, and trimmed dependencies - Refactored optional dependencies - Standardized conda/conda-forge environment builds - Scoped black linting to changed files - MHKiT-Software#436 - Author: @simmsa - Reviewer: @akeeste - Update `rex` dependency to target pypi package to [`NLR-rex[hsds]>=0.5.0`](https://pypi.org/project/NLR-rex/) - MHKiT-Software#449 - Author: @simmsa - Reviewer: @akeeste
PR to add functionality to read Aquadopp data packets, but this code has only been tested on Aquadopp profilers (not single-point Aquadopps). Note that Aquadopp/AWAC waves functionality has also been added but is untested. I've done a decent bit of cleanup of the nortek.py code in this PR as well. The PR also simplifies the code related to the non-cabled ADV's "orientation_down" parameter. (This parameter exists because the z-axis is flipped on the non-cabled version of the ADV). This PR no longer reads the bit set in each burst ping, which is wont to oscillate for an unknown reason, but instead takes the value from the datafile's header. This means that DOLfYN assumes that a non-cabled ADV is not moved after it starts running. Cabled ADVs, AWACs and Aquadopps also have the "orientation_down" parameter for user information, but it is not needed otherwise.
# MHKiT-Python v1.1.0 ## Additions * Acoustics: Add millicdecade and WISPR instrument support * Added millidecade spectral conversion * Added a WISPR hydrophone reader * Added a voltage-based `export_audio` resampling option * Refactored band-averaging to avoid losing information at frequency-band boundaries * #447 * Author: @jmcvey3 * Reviewer: @simmsa * DOLfYN: Add [Nortek Aquadopp](https://www.nortekgroup.com/oceanography/aquadopp-series) ADCP support * Added DOLfYN support for reading Aquadopp instruments * Cleaned Nortek parsing code * Simplified handling of the non-cabled ADV orientation flag * #434 * Author: @jmcvey3 * Reviewer: @akeeste * Examples: Add ADCP waves example: `example/adcp_waves_example.ipynb` * Added an example notebook showing how to ingest and analyze wave measurements from a dual-profile Nortek Signature 250 deployment at PacWave. * #430 * Author: @jmcvey3 * Reviewer: @akeeste ## Improvements ### Acoustics - Improved flexibility and robustness of the Acoustics module - Added a configurable FFT length for sound pressure PSDs - Renamed bin/windowing attributes for clarity - Fixed an incorrectly signed gain correction - #433 - Author: @jmcvey3 - Reviewer: @akeeste ### DOLfYN - Refactored PSD calculations to use `scipy.signal.welch` - Replaced DOLfYN's custom Welch-like PSD implementation (built each segment from bin slices, could not overlap FFT segments) with `scipy.signal.welch` - Removed the bin-based segment structure and added a `step` argument to control overlap - Dropped float32 casts in some functions in favor of float64 - Removed `fft.py` and renamed `tools/misc.py` to `tools.py` - Breaking Changes: - NaNs are no longer tolerated in PSD calculations - DOLfYN defaults to 0% overlap to preserve existing array shapes - Acoustics defaults to 50% overlap - PSD output time dimension renamed to `time_psd` - #452 - Author: @jmcvey3 - Reviewer: @akeeste, @simmsa - Improved handling of "averaged" profiles - Fixed handling of Nortek Signature dual-profile ADCP data by defaulting to "_avg" velocity variables when untagged ones are absent. - #430 - Author: @jmcvey3 - Reviewer: @akeeste - Critical PSD bugfix - Fixed a bug where individual FFTs received a 50% overlap twice, which corrupted the first and last spectrum of a timeseries. - #430 - Author: @jmcvey3 - Reviewer: @akeeste ### Examples - Added histograms to ADCP example - #448 - Author: @browniea - Reviewer: @akeeste ### River/IO - Fixed Qhull interpolation and D3D coordinate-system errors - #448 - Author: @browniea - Reviewer: @akeeste - Fixes: #442, #444 - Delft3D module updates - Added new Delft3D coordinate names - Added a new grid-convergence-index calculation function - Added support for xarray/netCDF4 input in the D3D module - #428 - Author: @browniea - Reviewer: @akeeste ### Wave - NDBC Directional Wave Units - Fixed NDBC directional wave spectrum output to return degrees instead of radians - Updated polar plots so 0 deg is at the top and increases clockwise - #437 - Author: @jmcvey3 - Reviewer: @akeeste - Fixes: #427 ### Wave/Hindcast - Added a `hindcast_guard` exception-handling decorator (`hindcast_exceptions.py`) that surfaces a clear error on HSDS request failures, distinguishing the known NLR HSDS outage (#450) from other failures - #449 - Author: @simmsa - Reviewer: @akeeste ## Maintenance - Added Python 3.13 support - #445 - Author: @simmsa - Reviewer: @akeeste - Fixes: #441 - Added [pandas 3](https://pandas.pydata.org/community/blog/pandas-3.0.html) Support - Updated the pandas dependency to allow pandas 3.x - Added a compatibility shim for NDBC missing-value handling related to pandas 3 object to String dtype api changes - Fixed a deprecated period alias in tests - #443 - Author: @simmsa - Reviewer: @akeeste - Fixes: #440 - Updated GitHub Actions CI, expanded installation/developer documentation, refreshed dev environment, and trimmed dependencies - Refactored optional dependencies - Standardized conda/conda-forge environment builds - Scoped black linting to changed files - #436 - Author: @simmsa - Reviewer: @akeeste - Update `rex` dependency to target pypi package to [`NLR-rex[hsds]>=0.5.0`](https://pypi.org/project/NLR-rex/) - #449 - Author: @simmsa - Reviewer: @akeeste
# MHKiT-Python v1.1.0 ## Additions * Acoustics: Add millicdecade and WISPR instrument support * Added millidecade spectral conversion * Added a WISPR hydrophone reader * Added a voltage-based `export_audio` resampling option * Refactored band-averaging to avoid losing information at frequency-band boundaries * #447 * Author: @jmcvey3 * Reviewer: @simmsa * DOLfYN: Add [Nortek Aquadopp](https://www.nortekgroup.com/oceanography/aquadopp-series) ADCP support * Added DOLfYN support for reading Aquadopp instruments * Cleaned Nortek parsing code * Simplified handling of the non-cabled ADV orientation flag * #434 * Author: @jmcvey3 * Reviewer: @akeeste * Examples: Add ADCP waves example: `example/adcp_waves_example.ipynb` * Added an example notebook showing how to ingest and analyze wave measurements from a dual-profile Nortek Signature 250 deployment at PacWave. * #430 * Author: @jmcvey3 * Reviewer: @akeeste ## Improvements ### Acoustics - Improved flexibility and robustness of the Acoustics module - Added a configurable FFT length for sound pressure PSDs - Renamed bin/windowing attributes for clarity - Fixed an incorrectly signed gain correction - #433 - Author: @jmcvey3 - Reviewer: @akeeste ### DOLfYN - Refactored PSD calculations to use `scipy.signal.welch` - Replaced DOLfYN's custom Welch-like PSD implementation (built each segment from bin slices, could not overlap FFT segments) with `scipy.signal.welch` - Removed the bin-based segment structure and added a `step` argument to control overlap - Dropped float32 casts in some functions in favor of float64 - Removed `fft.py` and renamed `tools/misc.py` to `tools.py` - Breaking Changes: - NaNs are no longer tolerated in PSD calculations - DOLfYN defaults to 0% overlap to preserve existing array shapes - Acoustics defaults to 50% overlap - PSD output time dimension renamed to `time_psd` - #452 - Author: @jmcvey3 - Reviewer: @akeeste, @simmsa - Improved handling of "averaged" profiles - Fixed handling of Nortek Signature dual-profile ADCP data by defaulting to "_avg" velocity variables when untagged ones are absent. - #430 - Author: @jmcvey3 - Reviewer: @akeeste - Critical PSD bugfix - Fixed a bug where individual FFTs received a 50% overlap twice, which corrupted the first and last spectrum of a timeseries. - #430 - Author: @jmcvey3 - Reviewer: @akeeste ### Examples - Added histograms to ADCP example - #448 - Author: @browniea - Reviewer: @akeeste ### River/IO - Fixed Qhull interpolation and D3D coordinate-system errors - #448 - Author: @browniea - Reviewer: @akeeste - Fixes: #442, #444 - Delft3D module updates - Added new Delft3D coordinate names - Added a new grid-convergence-index calculation function - Added support for xarray/netCDF4 input in the D3D module - #428 - Author: @browniea - Reviewer: @akeeste ### Wave - NDBC Directional Wave Units - Fixed NDBC directional wave spectrum output to return degrees instead of radians - Updated polar plots so 0 deg is at the top and increases clockwise - #437 - Author: @jmcvey3 - Reviewer: @akeeste - Fixes: #427 ### Wave/Hindcast - Added a `hindcast_guard` exception-handling decorator (`hindcast_exceptions.py`) that surfaces a clear error on HSDS request failures, distinguishing the known NLR HSDS outage (#450) from other failures - #449 - Author: @simmsa - Reviewer: @akeeste ## Maintenance - Added Python 3.13 support - #445 - Author: @simmsa - Reviewer: @akeeste - Fixes: #441 - Added [pandas 3](https://pandas.pydata.org/community/blog/pandas-3.0.html) Support - Updated the pandas dependency to allow pandas 3.x - Added a compatibility shim for NDBC missing-value handling related to pandas 3 object to String dtype api changes - Fixed a deprecated period alias in tests - #443 - Author: @simmsa - Reviewer: @akeeste - Fixes: #440 - Updated GitHub Actions CI, expanded installation/developer documentation, refreshed dev environment, and trimmed dependencies - Refactored optional dependencies - Standardized conda/conda-forge environment builds - Scoped black linting to changed files - #436 - Author: @simmsa - Reviewer: @akeeste - Update `rex` dependency to target pypi package to [`NLR-rex[hsds]>=0.5.0`](https://pypi.org/project/NLR-rex/) - #449 - Author: @simmsa - Reviewer: @akeeste
PR to add functionality to read Aquadopp data packets, but this code has only been tested on Aquadopp profilers (not single-point Aquadopps). Note that Aquadopp/AWAC waves functionality has also been added but is untested.
I've done a decent bit of cleanup of the nortek.py code in this PR as well.
The PR also simplifies the code related to the non-cabled ADV's "orientation_down" parameter. (This parameter exists because the z-axis is flipped on the non-cabled version of the ADV). This PR no longer reads the bit set in each burst ping, which is wont to oscillate for an unknown reason, but instead takes the value from the datafile's header. This means that DOLfYN assumes that a non-cabled ADV is not moved after it starts running.
Cabled ADVs, AWACs and Aquadopps also have the "orientation_down" parameter for user information, but it is not needed otherwise.